﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

// Created libraries
using FrbaBus.Core;
namespace FrbaBus.Canje_de_Ptos
{
    public partial class CanjePuntosAdmin : Form
    {
        public CanjePuntosAdmin()
        {
            InitializeComponent();
        }

        private void CanjePuntosAdmin_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            if (textBox1.Text == "")
            {
                MessageBox.Show("Debe ingresar su número de documento");
            }
            else
            {
                //Chequeo la existencia del DNI en la base
                DBManager db = new DBManager();
                SqlCommand consulta = new SqlCommand("select ALL_IN.existeCliente('" + textBox1.Text + "')");
                SQLResponse r = db.executeQuery(consulta);
                if (r.result.Rows[0][0].ToString() == "True")
                {
                    label4.Visible = true;
                    label6.Visible = true;
                    dataGridView1.Visible = true;
                    button2.Visible = true;
                    SqlCommand consulta2 = new SqlCommand("select (SUM(Puntos)-SUM(Acreditados)) from ALL_IN.PuntajesHastalaFecha where DNI = '" + textBox1.Text + "'");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    int size = r2.result.Rows[0][0].ToString().Length;
                    if (size == 0)
                    {
                        label6.Text = "0";
                    }
                    else
                    {
                        label6.Text = r2.result.Rows[0][0].ToString();
                    }
                    
                    dataGridView1.ReadOnly = true;
                    dataGridView1.AllowUserToAddRows = false;
                    dataGridView1.AllowUserToDeleteRows = false;
                    SqlCommand consulta3 = new SqlCommand("SELECT Nombre, Stock, Valor_Puntos from ALL_IN.Producto order by 3");
                    SQLResponse r4 = db.executeQuery(consulta3);
                    SqlCommand consulta5 = new SqlCommand("select count(*) from ALL_IN.Producto");
                    SQLResponse r5 = db.executeQuery(consulta5);
                    int valor = (int)r5.result.Rows[0][0];
                    for (int i = 0; i < valor; i++)
                    {
                        dataGridView1.Rows.Add(r4.result.Rows[i][0].ToString(), r4.result.Rows[i][1].ToString(), r4.result.Rows[i][2].ToString());
                    }
                    db.desconectar();

                }
                else
                {
                    MessageBox.Show("Introdujo un DNI incorrecto, o que no esta dado de alta como cliente existente.");
                }
                db.desconectar();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            string stock = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value.ToString();
            string puntos = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[2].Value.ToString();
            string producto = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString();
            if (Convert.ToInt32(label6.Text) >= Convert.ToInt32(puntos))
            {
                if (Convert.ToInt32(stock) > 0)
                {
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("exec ALL_IN.EditarCanjes @dni = " + textBox1.Text + ",@prod = '" + producto + "'");
                    db.executeQuery(consulta);
                    SqlCommand consulta8 = new SqlCommand("exec ALL_IN.EditarProducto @prod = '" + producto + "'");
                    db.executeQuery(consulta8);
                    SqlCommand consulta9 = new SqlCommand("exec ALL_IN.AcreditarPuntos @DNI=" + textBox1.Text + ", @puntos_a_acreditar=" + puntos);
                    db.executeQuery(consulta9);
                    MessageBox.Show("Se debitaron los puntajes canjeados.");
                    dataGridView1.Rows.Clear();
                    SqlCommand consulta2 = new SqlCommand("select (SUM(Puntos)-SUM(Acreditados)) from ALL_IN.PuntajesHastalaFecha where DNI = '" + textBox1.Text + "'");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    label6.Text = r2.result.Rows[0][0].ToString();
                    dataGridView1.ReadOnly = true;
                    dataGridView1.AllowUserToAddRows = false;
                    dataGridView1.AllowUserToDeleteRows = false;
                    SqlCommand consulta3 = new SqlCommand("SELECT Nombre, Stock, Valor_Puntos from ALL_IN.Producto order by 3");
                    SQLResponse r4 = db.executeQuery(consulta3);
                    SqlCommand consulta5 = new SqlCommand("select count(*) from ALL_IN.Producto");
                    SQLResponse r5 = db.executeQuery(consulta5);
                    int valor = (int)r5.result.Rows[0][0];
                    for (int i = 0; i < valor; i++)
                    {
                        dataGridView1.Rows.Add(r4.result.Rows[i][0].ToString(), r4.result.Rows[i][1].ToString(), r4.result.Rows[i][2].ToString());
                    }
                    db.desconectar();

                }
                else
                {
                    MessageBox.Show("No hay mas stock disponible.");
                }
            }
            else
            {
                MessageBox.Show("No posee los puntos suficientes.");
            }
        }

        private void textBox1_TextChanged(object sender, KeyPressEventArgs e)
        {
            int i = e.KeyChar;
            if (i >= 48 && i <= 57 || i == 8 || i == 13)
            {
            }
            else
            {
                MessageBox.Show("Solo están permitidos caracteres numéricos.");
                e.Handled = true;
            }
        }
    }
}
